<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />

	<title>Dragon</title>

	<link rel="stylesheet" type="text/css" href="css/main.css">

	<!-- Fichiers core -->
	<script src="js/core/lib/domready.js"></script>
	<script src="js/core/misc/functions.js"></script>
	<script src="js/core/misc/Input.js"></script>
	<script src="js/core/lib/ImageInGame/IIG.js"></script><!-- DOCUMENTATION : https://github.com/jmpp/ImageInGame.js -->

	<!-- Fichiers de configuration -->
	<script src="js/conf/game.cfg.js"></script>	

	<!-- Fichiers sources -->
	<script src="js/main/Game.js"></script>	
	<script src="js/main/Level.js"></script>	
	<script src="js/main/Island.js"></script>	

</head>
<body role="main">
	
	<div id="gameArea">
		<canvas id="gameCanvas" width="960" height="720"></canvas>

		<div id="gameover"></div>
	</div>

	<div id="header" class="disable-select">
	</div>

	<script>

		/**
		 * Global vars
		 **/

		var canvas, // Canvas
			CTX, // 2D context
			run, // Game Loop
			WIDTH, // Game area Width
			HEIGHT, // Game area Height
			input, // Input instance
			game, // instance of Game
			tuto, // instance of Tuto
			achievement, //instance of Achievement
			currentGameObject, // instance of a GameObject
			IM, // Image Manager instance
			soundLoader, // Sound Loader instance
			isLoadedImages,
			deltaTime, //independance framerate
			TIME; 
			
		canvas = $('#gameCanvas');
		CTX = canvas.getContext('2d');

		isLoadedImages = false;
		
		deltaTime = Date.now();
		// Uniquement si le canvas doit faire la taille de l'écran !
		/*WIDTH = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
		HEIGHT = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;*/
		
		// Uniquement si le canvas a une taille fixe
		WIDTH = 960;
		HEIGHT = 720;

		// Offset de drag & drop
		offset = {
			x : -WIDTH/2,
			y : -HEIGHT/2
		}

		/**
		 * Démarrage du jeu
		 **/
		initGame = function() {
			currentGameObject.init();
			startGame();
		}

		/**
		 * Démarrage d'une partie
		 **/
		startGame = function() {
			currentGameObject.start();
			run();
		}

		/**
		 * Arrêt de la partie
		 **/
		stopGame = function() {
			currentGameObject.clear();
		}
		
		/****************** GAME LOOP *******************/
		/**
		 * Boucle de jeu
		 * @param temps de jeu
		 **/
		run = function(_t) {
			TIME = _t;
			// Si le jeu doit être nettoyer (eg. pour redémarrer)
			if(currentGameObject.cleared === true) {
				currentGameObject.clear();
			}
			// Si le jeu est en cours
			else if(currentGameObject.stop === false) {
				// Met à jour les sprites
				IM.update();

				// Met à jour le controller principal du jeu
				currentGameObject.update();

				// Nettoire l'écouteur d'évènement clavier/souris
				input.mouse.click = false;
			}

			// On continue à appeller la boucle de gameplay seulement si le jeu n'est pas sur Stop
			if (!currentGameObject.stop) {
				// Rappel la boucle de jeu
				requestAnimationFrame(run);
			}
		};
		/*************** ENDING GAME LOOP ***************/
		
		// INSTANCES
		input = new Input({
            target : $('#gameCanvas')
        });
		game = new Game();
		IM = new IIG.ImageManager();
	
		// PATH
		var path = { 
			img : "img/"
		};
	
        // Ajout des sprites du jeu qui doivent être chargés
        // IM.add('img/skybox.jpg');
        IM.add('img/island.png');

		currentGameObject = game;

		// Sprites loaded !
        IM.loadAll(function() {
            setTimeout(function() {
                // Initialisation du jeu
				initGame();
            }, 1000);
        });

	</script>

</body>
</html>